#pragma once

#include <rclcpp/rclcpp.hpp>

namespace sensor::camera {

class CameraReceiver;
class CameraTrigger;
class ImageCollector;

class CameraComponent : public rclcpp::Node {
public:
    CameraComponent(const rclcpp::NodeOptions& options);

    void setupImageCollector();
    void setupCameraReceivers();
    void setupCameraTrigger();

private:
    std::unordered_map<std::string, std::shared_ptr<CameraReceiver>> video_devs_;
    std::shared_ptr<CameraTrigger> trigger_;
    std::shared_ptr<ImageCollector> collector_;
};

}